using System;
using System.Collections.Generic;

public class myVertex
{
  //Extra variable. Useful in algorithms for storing extra information. Use however you like.
  public int v_id;

  public int flag;

  //The 3D point position for this vertex.
  public myPoint3D point;

  //The 3D normal vector for this vertex.
  public myVector3D normal;

  //Link to any halfedge to which this vertex is the origin.
  public myHalfedge originof_halfedge; 

  public myVertex() 
  {
      point = new myPoint3D(0, 0, 0);
  }

  public void UpdatePoint(myPoint3D p)
  {
      point.X = p.X;
      point.Y = p.Y;
      point.Z = p.Z;
  }

  public myVertex GetClone()
  {
      myVertex clone = new myVertex();
      clone.normal = (normal != null) ? normal.GetClone() : null;
      clone.point = point.GetClone();
      clone.v_id = v_id;
      return clone;
  }
}
